<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;

class IndexController extends Controller {

    /**
     * 登录 采用ajax方式实现
     * 登录成功，转到个人中心，但是现在还没开发个人中心，暂时先刷新本页面
     * 现在采用的都是第三方登录（通过多说评论插件登录后跳转回登录时候所在页面）
     */
    // public function login() {
    //      $username = $_GET['username'];  //获取表单提交的用户名
    //      $password = $_GET['password'];  //获取表提交的密码

    //     //echo "0";
    //      $user = M("Users")->where(array("username" => $username, "password" => $password))->find();
    //      if ($user) {  //用户存在，则登录成功
    //          // 保存用户信息到session里
    //          //session('USERNAME4SESSION', $username);
    //          //$_SESSION["USERNAME4SESSION"] = $username;
    //          Session_Start();
    //          $_SESSION["USERNAME4SESSION"] = $username;
    //          // 返回登录成功的提示信息
    //          echo "1";
    //       } else {
    //           echo "0";
    //       }
    //     //$this->display();
    //     $this->assign("pageTitle", "登录");  //  设置文件的title
    // }


    /**
     * 进入首页，暂时仅仅只显示最新的10篇文章，其他文件通过滚动鼠标使用ajax的方式加载显示
     */
    public function index(){
        $this->assign("pageTitle", "技术文章专区");  //  设置文件的title
        
        Load('extend');
        $centList = array();
        $modelCtt = M("Content");
        // 获取过滤条件
        $cont_type = $_GET['cont_type'];  //文章分类
        if ($cont_type) {
            $centList = $modelCtt->where(array('cont_type' => $cont_type))->order('public_time DESC')->limit(10)->select();
        } else {
            $centList = $modelCtt->order('public_time DESC')->limit(10)->select();
        }
        //  暂时还不知道什么原因格式化时间结构总是1970-01-01 08:33，可能是电脑的问题，电脑时间出错了，暂时使用截取方式
//        $list = array();
//        foreach ($centList as $c) {
//            $c['public_time'] = substr($c['public_time'], 0, 16);
//            $list[] = $c;
//        }
        //  获取文章的评论数量
        $list = array();
        foreach ($centList as $c) {
            $c['comment_count'] = M("Leavemessage")->where(array('thread_key' => $c['id'], 'action' => 'create'))->count();
            $list[] = $c;
        }

        $this->assign("centList", $list);
        
        //初始化页面的的文章类型列表
        $allContType = M("ContentType")->select();
        $this->assign("typeList", $allContType);

        $this->display();
    }

    /**
     * 退出，直接销毁session里的值
     */
    public function logout() {
        $currentUrl = $_GET['currentUrl'];  //  获取点击“退出”是所在页面的URL
        //session(null); // 清空当前的session
        //echo "===============".$currentUrl;
        session('WEIBOUSERINFO', null); // 删除name
        header("Location: $currentUrl");  //  退出后转到点击“退出”的页面
        //exit;
    }

    /**
     * 显示文章的详细信息：转到pc 界面
     */
    public function detail() {

        $this->setDetailInfo();

        $this->display();
    }

    /**
     * 显示文章的详细信息：转到小屏幕设备界面
     */
    public function detail4mobile() {
        $this->setDetailInfo();

        $this->display();
    }

    public function setDetailInfo() {

        $id = $_GET['id'];
        if ($id) {  //id不为空转到详细页面
            $content = M("Content")->where(array('id' => $id))->find();
            
            $this->assign("pageTitle", $content['title']);  //  设置文件的title
            
            //  显示评论列表
            //$commList = M("Comment")->where(array('c_id' => $id))->order('id DESC')->select();
        } else {  //转回首页
            //$this->display("index.php?m=Home&c=Index&a=index");
            header('Location: index.php?m=Home&c=Index&a=index');
        }
        //初始化页面的的文章类型列表
        $allContType = M("ContentType")->select();
        $this->assign("typeList", $allContType);
        //  文章内容
        $this->assign("content", $content);
    }

    /**
     * 判断访问的设备是否是小屏幕的移动设备
     * @return boolean true-是；false-不是；
     */
    public function isMobile() { 
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
            return true;
        } 
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA'])) { 
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        } 
        // 脑残法，判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT'])) {
            $clientkeywords = array ('nokia',
                'sony',
                'ericsson',
                'mot',
                'samsung',
                'htc',
                'sgh',
                'lg',
                'sharp',
                'sie-',
                'philips',
                'panasonic',
                'alcatel',
                'lenovo',
                'iphone',
                'ipod',
                'blackberry',
                'meizu',
                'android',
                'netfront',
                'symbian',
                'ucweb',
                'windowsce',
                'palm',
                'operamini',
                'operamobi',
                'openwave',
                'nexusone',
                'cldc',
                'midp',
                'wap',
                'mobile'
                ); 
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
                return true;
            } 
        } 
        // 协议法，因为有可能不准确，放到最后判断
        if (isset ($_SERVER['HTTP_ACCEPT'])) { 
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false 
                || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
                return true;
            } 
        } 

        return false;
    } 

    
    /**
     * 保存评论信息，传递过来的值 nichName=23&email=23&website=23&com_content=3
     */
    /*  使用多说评论插件之后评论直接使用多说的功能不需要再重新开发
    public function saveCommentInfo() {
    	//$comm_id = $_POST['comm_id'];  //  文章ID
    	$data['c_id'] = $_POST['comm_id'];
    	//$data['nickName'] = $_POST['nickName'];
        $data['nickName'] = $_POST['wbusername'];  // 
//        $data['email'] = $_POST['email'];
    	$data['website'] = $_POST['wbuserwebsite'];
    	$data['headerPic'] = $_POST['wbuserheadpic'];
        $data['content'] = $_POST['content'];
        $data['publicTime'] = date('y-m-d h:i:s', time());

        $Model = M('Comment');
        $flag = $Model->add($data);
        if ($flag) {
        	//  评论成功
        	$data['success'] = true;
        	echo json_encode($data);
        } else {  //  评论失败
        	// 
        	$data['success'] = false;
        	echo json_encode($data);
        }
    }
    */

    
    /**
     * ajax方式分页，滚动到底部自动加载下一页
     */
    public function ajaxList() {
        if(!empty($_POST["pagesize"]) && !empty($_POST["pagenumber"])){
//            $list = array();
            $centList = array();
            //$array_news[]='委员建议尽快推行延迟退休：70岁身体还很好';
            Load('extend');
            $modelCtt = M("Content");
            // 获取过滤条件
            $cont_type = $_GET['cont_type'];  //文章分类
            if ($cont_type) {
                $centList = $modelCtt->where(array('cont_type' => $cont_type))->order('public_time DESC')->select();  //->limit(10)
            } else {
                $centList = $modelCtt->order('public_time DESC')->select();  //->limit(10)
            }
            
            $array	  = array();
            $number   = $_POST["pagenumber"];
            $pagesize = $_POST["pagesize"];
            $p		  = $pagesize*$number-$pagesize;
            $s		  = $pagesize*$number;

            if(!empty($centList[$p])){
                $i=0;
                for($p;$p<$s;$p++){
                    $array['data'][$i]['id'] = $centList[$p]['id'];
                    $array['data'][$i]['title'] = $centList[$p]['title'];
                    $array['data'][$i]['ctt_summary'] = $centList[$p]['ctt_summary'];
                    //  暂时还不知道什么原因格式化时间结构总是1970-01-01 08:33，可能是电脑的问题，电脑时间出错了，暂时使用截取方式
                    $array['data'][$i]['public_time'] = substr($centList[$p]['public_time'], 0, 16);
                    $array['data'][$i]['ctt_img_url'] = $centList[$p]['ctt_img_url'];
                    
                    //  直接获取文章的类型名称
                    $type_no = $centList[$p]['cont_type'];
                    //$type_name = M("ContentType")->getFieldByType_name($type_no,'type_no');
                    $val = M("ContentType")->where(array('type_no' => $type_no))->select();
                    //exit();
                    $array['data'][$i]['cont_type_name'] =$val[0]['type_name'];
                    $array['data'][$i]['cont_type_no'] = $type_no;
                    $array['data'][$i]['bad_count'] =$centList[$p]['bad_count'];
                    $array['data'][$i]['praise_count'] =$centList[$p]['praise_count'];
                    // 文章评论数量
                    $array['data'][$i]['comment_count'] = M("Leavemessage")->where(array('thread_key' => $centList[$p]['id'], 'action' => 'create'))->count();
                    
                    $i++;
                }
                $array['length']=$i;
            } else {
                $array['length']='0';
            }
            echo json_encode($array);
        }
    }
    
    /**
     * 首页：顶谋篇文章的数量增一
     */
    public function praiseInc() {
        Load('extend');
        $cId = $_GET['c_id'];
        $data['id'] = $cId;
        // 要修改的数据对象属性赋值
        $data['praise_count'] = $_GET['nextCount'];
        $model = M("Content");
//        $f = $model->where(array('id' => $cId))->save($data); // 根据条件更新记录
        $f = $model->save($data); 
        if ($f) {
            echo "1";
        } else {
            echo "0";
        }
    }
    
    /**
     * 首页：踩谋篇文章的数量增一
     */
    public function badInc() {
//        Load('extend');
        $cId = $_GET['c_id'];
        // 要修改的数据对象属性赋值
        $data['bad_count'] = $_GET['nextCount'];
        $f = M("Content")->where(array('id' => $cId))->save($data); // 根据条件更新记录
        if ($f) {
            echo "1";
        } else {
            echo "0";
        }
    }
    
    /**
     * 特意添加的测试方法以及显示页面test.html
     */
    public function test() {
        $this->display();
    }
}
